package com.rattsoftware.server.dao;

import java.util.List;

import com.rattsoftware.server.admin.model.Faculty;
import com.rattsoftware.server.admin.model.paging.PagingLoadConfig;
import com.rattsoftware.server.admin.model.paging.PagingLoadResult;

/**
 * Provides data access 
 * services to the <code>Faculty service</code>.
 * 
 *
 */
public interface FacultyDAO extends BaseDAO<Faculty> {
	
	/**
	 * Gets a list of faculties in the database.
	 * 
	 * @return the faculty list.
	 */
	List<Faculty> getFaculties();
	
	/**
	 * Retrieves a Faculty by identifier
	 * 
	 * @param id Integer 
	 * @return Faculty, or null if no match found
	 */
	Faculty getFaculty(Integer id);
	
	/**
	 * Saves a faculty to the database.
	 * 
	 * @param faculty the faculty to save.
	 */
	void saveFaculty(Faculty faculty);
	
	/**
	 * Removes a faculty from the database.
	 * 
	 * @param faculty the faculty to remove.
	 * 
	 */
	void deleteFaculty(Faculty faculty);
	
	/**
	 * Retrieves a page of the Faculty data.
	 * 
	 * @param pagingLoadConfig
	 *            config to specify paging related config
	 * @return PagingLoadResult containing a page of course data
	 */
	PagingLoadResult<Faculty> getFacultyList(PagingLoadConfig pagingLoadConfig);
}
